package com.mmy.service.impl.constzone;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.mmy.dao.constzone.TConstZoneRepository;
import com.mmy.domain.constzone.TConstZone;
import com.mmy.mapper.ConstZoneDao;
import com.mmy.pojo.ConstZone;

import lombok.extern.slf4j.Slf4j;

@Service
@Slf4j
public class ConstZoneServiceImpl /* implements ConstZoneService */ {
	@Autowired
	private TConstZoneRepository tConstZoneRepository;
	
	@Autowired
	ConstZoneDao dao;

	/**
	 * 查找所有的洲
	 *
	 * @author 创建人 hanxl
	 * @date 创建日期2021.03.17
	 * 
	 */

	public List<TConstZone> findAllContinent() {

		return tConstZoneRepository.findAllContinent();
	}

	/**
	 * 查询所有省
	 *
	 * @author 创建人 hanxl 整理 原尚主亮写
	 * @date 创建日期 2020.10.29
	 * 
	 */
	public List<TConstZone> findAllProvince() {

		return tConstZoneRepository.findAllProvince();
	}

	/**
	 * 查询所有市
	 *
	 * @author 创建人 hanxl 整理 原尚主亮写
	 * @date 创建日期 2020.10.29
	 * 
	 */
	public List<TConstZone> findAllCity() {

		return tConstZoneRepository.findAllCity();
	}

	/**
	 * 查询所有区
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */
	public List<TConstZone> findAllDistrict() {

		return tConstZoneRepository.findAllDistrict();
	}
	
	/**
	 * 查找该id的国家
	 * 
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2021.03.25
	 * 
	 */
	public TConstZone findCountry(int iZoneID) {

		return tConstZoneRepository.findCountry(iZoneID);
	}
	
	/**
	 * 查找该id的省
	 * 
	 * 2021.02.23 前台首页旅游线路用到 hanxl
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */
	public TConstZone findProvince(int iZoneID) {

		return tConstZoneRepository.findProvince(iZoneID);
	}

	/**
	 * 查找该id的市
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */

	public TConstZone findCity(int iZoneID) {

		return tConstZoneRepository.findCity(iZoneID);
	}

	/**
	 * 查找该id的省
	 *
	 * @author lys
	 * @date 创建日期
	 * 
	 */
	public String findProvinceStr(int iZoneID) {

		return tConstZoneRepository.findProvinceStr(iZoneID);
	}

	/**
	 * 查找该id的市
	 *
	 * @author 创建人 lys
	 * @date 创建日期
	 * 
	 */

	public String findCityStr(int iZoneID) {

		return tConstZoneRepository.findCityStr(iZoneID);
	}

	/**
	 * 查找该id的省
	 *
	 * @author liys
	 * @date 创建日期
	 * 
	 */
	public Map<String, Object> findProvinceMap(int iZoneID) {

		return tConstZoneRepository.findProvinceMap(iZoneID);
	}

	/**
	 * 查找该id的市
	 *
	 * @author 创建人 liys
	 * @date 创建日期
	 * 
	 */

	public Map<String, Object> findCityMap(int iZoneID) {

		return tConstZoneRepository.findCityMap(iZoneID);
	}

	/**
	 * 查找该id的区
	 *
	 * @author 创建人 liys
	 * @date 创建日期 2020.12.18
	 * 
	 */
	public Map<String, Object> findDistrictMap(int iZoneID) {
		return tConstZoneRepository.findDistrictMap(iZoneID);
	}

	/**
	 * 查找该id(区)所在市的全部区
	 * 
	 * 后台景区搜索用到 查询该id(市) 所有的区 2021.02.05 hanxl
	 *
	 * @author 创建人 lys
	 * @date 创建日期 2020.12.30
	 * 
	 */
	public List<TConstZone> findDistricts(int zoneID) {

		return tConstZoneRepository.findDistricts(zoneID);
	}

	// szl 查找所有国家
	public List<TConstZone> findAllCountriess() {

		return tConstZoneRepository.findAllCountriess();
	}

	/* 获得所有洲际 */
	public List<TConstZone> findAllContinents() {

		return tConstZoneRepository.findAllContinents();
	}

	/**
	 * 查询该ID对应的所有国家 机场修改用到
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */
	public List<TConstZone> findCountriess(int zoneID) {

		return tConstZoneRepository.findCountriess(zoneID);
	}

	/**
	 * 查找该id(省)所有的市 在前台景区菜单搜索区域使用 后台景区搜索也需要用到 修改机场时也用到
	 *
	 * @author 创建人 shangzl 整理人hanxl
	 * @date 创建日期 修改人2021.01.14
	 * 
	 */
	public List<TConstZone> findCities(int iZoneID) {

		return tConstZoneRepository.findCities(iZoneID);
	}

	/**
	 * 查找该id的洲
	 * 
	 * 修改机场用到
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */
	public TConstZone findContinent(int iZoneID) {

		return tConstZoneRepository.findContinent(iZoneID);
	}

	/* 查找该id的区 */
	public List<TConstZone> findAreas(int zoneID) {

		return tConstZoneRepository.findAreas(zoneID);
	}

	/* 查找所有的洲 */
	public List<TConstZone> findContinents() {

		return tConstZoneRepository.findContinents();
	}

	/* 查找所有的省 */
	public List<TConstZone> findProvince() {

		return tConstZoneRepository.findProvince();
	}

	/**
	 * 通过市的名字查询市的信息 前台景区菜单显示用到
	 *
	 * @author 创建人hanxl
	 * @date 创建日期 2021.01.12
	 * 
	 */
	public TConstZone getZoneID(String strCityName) {
		return tConstZoneRepository.getZoneID(strCityName);
	}

	/**
	 * 通过ID查询 前台景区菜单首页搜索用到
	 *
	 * @author 创建人hanxl
	 * @date 创建日期 2021.01.13
	 * 
	 */
	public TConstZone findByZoneID(String strZoneID) {
		int iZoneID = Integer.parseInt(strZoneID);
		return tConstZoneRepository.findByZoneID(iZoneID);
	}

	/**
	 * 根据iZoneID得到完整的省市区str
	 *
	 * @author 创建人liys
	 * @date 创建日期 2021.01.27
	 * 
	 */
	public String findLocation(int iZoneID) {

		String province = tConstZoneRepository.findProvinceStr(iZoneID);
		String city = tConstZoneRepository.findCityStr(iZoneID);
		String district = tConstZoneRepository.findDistrictStr(iZoneID);
		String location = province + city + district;
		return location;
	}
	
	/**
	 * 新三级联动--查询所有省
	 *
	 * @author liys
	 * @date 创建日期 2021.02.09
	 * 
	 */
	public List<Map<String, Object>> getAllProvince() {
		return tConstZoneRepository.getAllProvince();
	}

	/**
	 * 新三级联动--查询省的所有市
	 *
	 * @author 创建人liys
	 * @date 创建日期 2021.02.09
	 * 
	 */
	public List<Map<String, Object>> getCities(int zoneID) {
		return tConstZoneRepository.getCities(zoneID);
	}

	/**
	 * 新三级联动--市的所有区
	 *
	 * @author 创建人liys
	 * @date 创建日期 2021.02.09
	 * 
	 */
	public List<Map<String, Object>> getAreas(int zoneID) {
		return tConstZoneRepository.getAreas(zoneID);
	}
	
	/**
	  * @descr 级联选择器 
	  * @param 
	  * @return 
	  * @throws 
	  * @author liys 
	  * @date 2021-6-7 
	 */
	public List<ConstZone> getAll(){
		
		//所有的省
		List<ConstZone> pList = dao.getProvince();
		for (ConstZone pItem : pList) {
			int pZoneID = pItem.getValue();
			//市列表
			List<ConstZone> cList = dao.getCity(pZoneID);
			for (ConstZone cItem : cList) {
				int cZoneID = cItem.getValue();
				List<ConstZone> aList = dao.getArea(cZoneID);
				log.info(aList.toString());
				cItem.setChildren(aList);
				log.info(cItem.toString());
			}
			log.info(cList.toString());
			pItem.setChildren(cList);
		}
		return pList;
	}
 	
	
}
